<template>
  <div id="wordBarChart" style="width: 1000px; height: 800px"></div>
</template>

<script>
// 引入基础 ECharts 库
import * as echarts from 'echarts'
// 导入词云数据
import wordData from './word_cloud_data3.json'

export default {
  name: 'WordBarChart',
  mounted() {
    this.initWordBarChart()
  },
  methods: {
    initWordBarChart() {
      // 初始化 echarts 实例
      const myChart = echarts.init(document.getElementById('wordBarChart'))

      // 对数据按value降序排序后取前10
      const sortedData = [...wordData].sort((a, b) => b.value - a.value).slice(0, 10)
      
      // 提取x轴类别（词语）和对应的数据值（出现次数）
      const words = sortedData.map(item => item.name)
      const counts = sortedData.map(item => item.value)

      // 配置直方图的选项
      const option = {
        title: {
          text: '出现次数最多的前10个词',
          left: 'center',
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'shadow' // 阴影指示器，用于柱状图
          },
          formatter: '{a} <br/>{b}: {c}次',
        },
        grid: {
          left: '3%',
          right: '4%',
          bottom: '3%',
          containLabel: true // 包含坐标轴刻度标签
        },
        xAxis: {
          type: 'category',
          data: words,
          name: '词语',
          axisLabel: {
            rotate: 30, // 标签旋转30度，防止重叠
            interval: 0 // 强制显示所有标签
          }
        },
        yAxis: {
          type: 'value',
          name: '出现次数'
        },
        series: [
          {
            name: '出现次数',
            type: 'bar',
            data: counts,
            itemStyle: {
              // 柱状图颜色
              color: '#722ed1'
            },
            // 柱体宽度
            barWidth: '60%'
          }
        ]
      }

      // 使用刚指定的配置项和数据显示图表
      myChart.setOption(option)

      // 监听窗口大小变化，自动调整图表尺寸
      window.addEventListener('resize', () => {
        myChart.resize()
      })
    }
  }
}
</script>

<style scoped></style>